Micron Document
Livres et Wikis | Archives | Info


Language binding
layout: Wide Β· Narrow Β· Centered
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
In programming and software design, a binding is an application programming interface (API) that provides glue code specifically made to allow a programming language to use a foreign library or operating system service (one that is not native to that language).

Contents

β€’ Object models
β€’ Porting
β€’ See also
β€’ References

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Characteristics

Binding generally refers to a mapping of one thing to another. In the context of software libraries, bindings are wrapper libraries that bridge two programming languages, so that a library written for one language can be used in another language.cite-ref-1[1] Many software libraries are written in system programming languages such as C or C++. To use such libraries from another language, usually of higher-level, such as Java, Common Lisp, Scheme, Python, or Lua, a binding to the library must be created in that language, possibly requiring recompiling the language's code, depending on the amount of modification needed.cite-ref-2[2] However, most languages offer a foreign function interface, such as Python's and OCaml's ctypes, and Embeddable Common Lisp's cffi and uffi.cite-ref-3[3]cite-ref-4[4]cite-ref-5[5]

For example, Python bindings are used when an extant C library, written for some purpose, is to be used from Python. Another example is libsvn which is written in C to provide an API to access the Subversion software repository. To access Subversion from within Java code, libsvnjavahl can be used, which depends on libsvn being installed and acts as a bridge between the language Java and libsvn, thus providing an API that invokes functions from libsvn to do the work.cite-ref-6[6]

Major motives to create library bindings include software reuse, to reduce reimplementing a library in several languages, and the difficulty of implementing some algorithms efficiently in some high-level languages.

Runtime environment

Object models

β€’ Common Object Request Broker Architecture (CORBA) – cross-platform-language model
β€’ Component Object Model (COM) – Microsoft Windows only cross-language model

β€’ Distributed Component Object Model (DCOM) – extension enabling COM to work over networks
β€’ Cross Platform Component Object Model (XPCOM) – Mozilla applications cross-platform model

β€’ Freedesktop.org D-Bus – open cross-platform-language model

Virtual machines
Porting

β€’ Portable object – cross-platform-language object model definition

See also

β€’ Embedded SQL
β€’ Simplified Wrapper and Interface Generator (SWIG) – interface binding generator from many languages to many languages, open-source

References

cite-note-11. ↑ "Appendix A. Creating a language binding for cairo". Cairographics.org. Retrieved 2014-04-02.
cite-note-22. ↑ "Standards, APIs, Interfaces and Bindings". Acm.org. Archived from the original on 2015-01-16. Retrieved 2014-04-02.
cite-note-33. ↑ "ctypes – A foreign function library for Python". Python v3.8.3 documentation. Docs.python.org. Retrieved 2020-06-04.
cite-note-44. ↑ citerefhickeymadhavapeddyminsky2013Hickey, Jason; Madhavapeddy, Anil; Minsky, Yaron (2013). "Real Worl OCaml, Chapter 19. Foreign Function Interface". realworldocaml.org. Archived from the original on 2015-07-18. Retrieved 2015-07-19.
cite-note-55. ↑ "Introduction – CFFI User Manual". Common-lisp.net. Retrieved 2014-04-02.
cite-note-66. ↑ "Subversion JavaHL FAQ". Subclipse.tigris.org. 2013-06-18. Archived from the original on 2014-12-27. Retrieved 2014-04-02.

External links

β€’ JTC1/SC22/WG11 - Binding Techniques, an ISO standard for language bindings
β€’ What is a language binding?